package demo.day02

// 23 在函数中定义参数是函数的函数
fun main() {
    loginApi(USER_NAME, USER_PWD) { msg: String, code: Int ->
        println("最终登录情况如下===>msg:$msg,code:$code")
    }
}

const val USER_NAME = "xiaopang"
const val USER_PWD = "123456"

// 登录API

private fun loginApi(userName: String, userPwd: String, responseResult: (String, Int) -> Unit) {
    if (userName.isEmpty() || userPwd.isEmpty()) {
        TODO("用户名或者密码为空") // 出现问题终止程序
    }
    if (userName.length > 3 && userPwd.length > 3) {
        // 调用服务器
        if (webServiceLoginApi(userName, userPwd)) {
            println("登录成功，可以操作软件了")
            responseResult("login success", 200)
        } else {
            // 登录失败的逻辑处理
            println("登录失败，请重试")
            responseResult("login error", 404)
        }
    } else {
        TODO("用户名密码长度不合格")
    }
}

private fun webServiceLoginApi(name: String, pwd: String): Boolean {
    // kt的if是表达式 很灵活 java的if是语句 有局限性
    return name == USER_NAME && pwd == USER_PWD
}